package com.hotel.controle;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.hibernate.Session;

import com.hotel.dao.CidadeDAO;
import com.hotel.entidade.Cidade;
import com.hotel.util.HibernateUtil;

@ManagedBean(name="cidadeBean")
@SessionScoped
public class CidadeControle {

	private CidadeDAO cidadeDAO;
	private Cidade cidade;
	@SuppressWarnings("rawtypes")
	private DataModel listaCidades;
	private Session session;

	public CidadeDAO getCidadeDAO() {
		return cidadeDAO;
	}

	public void setCidadeDAO(CidadeDAO cidadeDAO) {
		this.cidadeDAO = cidadeDAO;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}

	@SuppressWarnings("rawtypes")
	public DataModel getListaCidades() {
		listarCidades();
		return listaCidades;
	}

	@SuppressWarnings("rawtypes")
	public void setListaCidades(DataModel listaCidades) {
		this.listaCidades = listaCidades;
	}

	public Session getSession() {
		return session;
	}

	public void setSession(Session session) {
		this.session = session;
	}
	
	public void listarCidades() {
		session = HibernateUtil.configureSessionFactory().openSession();
		cidadeDAO = new CidadeDAO(session);
		List<Cidade> lista = cidadeDAO.listaTodos();
		listaCidades = new ListDataModel<Cidade>(lista);
	}
	
	public void novaCidade() {
		cidade = new Cidade();
	}

	public void inserirCidade() {
		session = HibernateUtil.configureSessionFactory().openSession();
		cidadeDAO = new CidadeDAO(session);
		try{
			cidadeDAO.insere(cidade);
		} catch (Exception e) {
			e.printStackTrace();
		}
		listarCidades();
	}
	
	public void preparaAlterarCidade() {
		cidade = (Cidade) (listaCidades.getRowData());
	}
	
	public void alterarCidade(){
		cidadeDAO = new CidadeDAO(session);
		cidadeDAO.atualisa(cidade);
	}

	public void excluirCidade() {
		Cidade cidade = (Cidade) (listaCidades.getRowData());
		cidadeDAO = new CidadeDAO(session);
		cidadeDAO.deleta(cidade);
		listarCidades();
	}

}
